/* eslint-disable jsdoc/require-param */
/**
 * @callback Predicate
 * @param {string} data
 * @param {number=} index
 * @returns {boolean}
 */

/** @type {Predicate} */
const ok = (s) => !(s.length % 2);

/** @enum {number} */
const JSDocState = {
  BeginningOfLine: 0,
  SawAsterisk: 1,
  SavingComments: 2,
};

JSDocState.SawAsterisk;
/**
 * @template T
 * @typedef  {{ t: T }} Box
 */
/**
 * @template U
 * @argument u {U}
 * @returns {{t: U}} {@link Box} containing the parameter.
 */
function box(u) {
  return { t: u };
}

// /**
//  * @this {HTMLElement}
//  * @param {*} e
//  */
// function callbackForLater(e) {
//   this.tabIndex = Number.parseInt(e, 10); // should be fine!
// }

// https://docs.joshuatz.com/cheatsheets/js/jsdoc/
